// 接口是对象的状态(属性)和行为(方法)的抽象(描述)

import { Interface } from "readline"

// 接口：是一种类型，是一种规范，是一种能力，是一种约束
(() => {
    // 需求: 创建人的对象, 需要对人的属性进行一定的约束

    // id是number类型, 必须有, 只读的
    // name是string类型, 必须有
    // age是number类型, 必须有
    // sex是string类型, 可以没有

    // 定义一个接口，该接口作为person对象的使用，限定或者是约束该对象的数据类型
    interface IPerson {
        // id是只读的！ 是number类型
        readonly id: number
        name: string
        age: number
        sex?: string
    }

    // 定义一个对象，该对象的类型就是我定义的接口 IPerson
    const person: IPerson = {
        id: 1,
        name: '小提阿尼',
        age: 18,
        // sex: '女'
    }

    console.log(person);
    // person.id = 10 // 此时id 属性是可读可写
    console.log(person);
    person.sex = '女'
    console.log(person);
    // person.money = 100  //此时是不可的！



})()